// const { Sequelize } = require("sequelize");
// const config = require("../config")
// const moment = require("moment")

// const useUser = require("./user")
// const useArticle = require("./article")
const { Sequelize } = require("sequelize");
const config = require("../config")
const moment = require("moment")

const useUser = require("./user")
const useArticle = require("./article")


/**
 * 初始化数据库
 */
// const sequelize = new Sequelize({
//     ...config.MODEL,
//     hooks: {
//         beforeUpdate(instance) {
//             instance.set("updatedAt", moment().format("YYYY-MM-DD HH:mm"))
//         }
//     }
// })
const sequelize = new Sequelize({
    ...config.MODEL,
    hooks: {
        beforeUpdate(instance) {
            instance.set("updatedAt", moment().format("YYYY-MM-DD HH:mm"))
        }
    }
})

/**
 * 注册模型
 */
// const User = useUser(sequelize)
// const Article = useArticle(sequelize)
const User = useUser(sequelize)
const Article = useArticle(sequelize)

/**
 * 模型关联
 * 一对多 用户对文章
 * 属于  文章对用户
 */
// User.hasMany(Article)
// Article.belongsTo(User)
User.hasMany(Article)
Article.belongsTo(User)


/**
 * 同步创建数据表
 */

// sequelize.sync({ alter: true });
sequelize.sync({ alter: true });
/**
 * 自动创建一个用户 
 * 自执行函数 注意在上一个添加 符号 ；
 */

// (async () => {
//     const user = await User.findOne({
//         where: { username: "admin" }
//     })

//     if (user) {
//         return
//     }

//     await User.create({
//         username: "admin",
//         password: "vue3KoaBlog"
//     })
// })()
(async () => {
    const user = await User.findOne({
        where: { username: "admin" }
    })
    if (user) return;
    await User.create({
        username: 'admin',
        password: 'vue3KoaBlog'
    })
})()

// module.exports = { User, Article }
module.exports = {
    User, Article
}